﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CANO.Data.DAOs
{
	public class TipoTelefonoDAO
	{
		public int TipoTelefonoID { get; set; }
		public string TipoTelefono { get; set; }

		public static List<TipoTelefonoDAO> getAll()
		{
			List<TipoTelefonoDAO> listTipoTelefono = new List<TipoTelefonoDAO>();

			using (dcCanoDataContext context = new dcCanoDataContext())
			{

				var tipoTelefonoCollection =
					from tt in context.TipoTelefonos
					select tt;

				foreach (var item in tipoTelefonoCollection)
				{
					TipoTelefonoDAO tipoTelefono = new TipoTelefonoDAO();
					tipoTelefono.TipoTelefonoID = item.TipoTelefonoID;
					tipoTelefono.TipoTelefono = item.TipoTelefono1;
					listTipoTelefono.Add(tipoTelefono);
				}
				return listTipoTelefono;
			}
		}

        public static TipoTelefonoDAO GetById(int TipoTelId)
        {
            List<TipoTelefonoDAO> listTipoTelefono = new List<TipoTelefonoDAO>();

            using (dcCanoDataContext context = new dcCanoDataContext())
            {

                var tipoTelefonoCollection =
                    from tt in context.TipoTelefonos
                    where tt.TipoTelefonoID == TipoTelId
                    select tt;

               
                    TipoTelefonoDAO tipoTelefono = new TipoTelefonoDAO();
                    tipoTelefono.TipoTelefonoID = tipoTelefonoCollection.SingleOrDefault().TipoTelefonoID;
                    tipoTelefono.TipoTelefono = tipoTelefonoCollection.SingleOrDefault().TipoTelefono1;

                    listTipoTelefono.Add(tipoTelefono);

                    return tipoTelefono;
                
            }
        }


		public static List<TipoTelefonoDAO> getAll(int User)
		{
			List<TipoTelefonoDAO> listTipoTelefono = new List<TipoTelefonoDAO>();

			using (dcCanoDataContext context = new dcCanoDataContext())
			{

				var tipoTelefonoCollection =
					from tt in context.TipoTelefonos
					select tt;

				var telefonosContacto = ContactoTelefonosDAO.getAllByContactoID(User);


				foreach (var item in tipoTelefonoCollection)
				{
					TipoTelefonoDAO tipoTelefono = new TipoTelefonoDAO();
					tipoTelefono.TipoTelefonoID = item.TipoTelefonoID;
					tipoTelefono.TipoTelefono = item.TipoTelefono1;

					listTipoTelefono.Add(tipoTelefono);

					foreach (var tc in telefonosContacto)
					{
						if (tc.TipoTelefonoID == item.TipoTelefonoID)
							listTipoTelefono.Remove(tipoTelefono);
					}

				}
			}
			return listTipoTelefono;
		}

		public static void create(string TipoTelefono)
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
				TipoTelefono newTipoTelefono = new TipoTelefono();
				newTipoTelefono.TipoTelefono1 = TipoTelefono;
				newTipoTelefono.TipoTelefonoID = getId();

				context.TipoTelefonos.InsertOnSubmit(newTipoTelefono);
				context.SubmitChanges();
			}
		}

		private static int getId()
		{
			using (dcCanoDataContext context = new dcCanoDataContext())
			{
				var tipoTelefonoCollection =
					from tt in context.TipoTelefonos
					select tt.TipoTelefonoID;

				return tipoTelefonoCollection.Max() + 1;
			}
		}

        public static void Update(TipoTelefonoDAO ttUpdate)
        {
            using (dcCanoDataContext context = new dcCanoDataContext())
            {
                var tt =
                    (from t in context.TipoTelefonos
                     where t.TipoTelefonoID == ttUpdate.TipoTelefonoID
                     select t).Single();

                tt.TipoTelefono1 = ttUpdate.TipoTelefono;

                context.SubmitChanges();
            }
        }

        public static int Delete(int TipoTelefonoID)
        {
            try
            {
                using (dcCanoDataContext context = new dcCanoDataContext())
                {
                    var tt =
                        (from t in context.TipoTelefonos
                         where t.TipoTelefonoID == TipoTelefonoID
                         select t).Single();

                    //tt.Status = 1; //Delete
                    context.TipoTelefonos.DeleteOnSubmit(tt);
                    context.SubmitChanges();
                    return 1;
                }
            }
            catch (Exception)
            {
                return 0;
            }
          

        }
	}
}
